home *** CD-ROM | disk | FTP | other *** search
/ World Tours: Brazil / WorldTours: Brazil.iso / mac / content / main.dir / 00119_Script_CastMemberFactory < prev    next >
Text File  |  2007-04-22  |  2KB  |  80 lines

  1. --------------------------------------------------------------------------------------------------------------
  2. -- CastMemberFactory
  3. -- v. 0.1.0
  4. -- last upated 27/5/2
  5.  
  6.  
  7. -- Simple utility object to manage the creation and destruction of cast members at run-time.
  8.  
  9. -- Why use this script rather than new(#memberType) lingo? 
  10.  
  11.  
  12.  
  13. --------------------------------------------------------------------------------------------------------------
  14.  
  15.  
  16. property myMembers, myNextSlot, myCastlib
  17.  
  18.  
  19. --------------------------------------------------------------------------------------------------------------
  20. -- PUBLIC
  21. --------------------------------------------------------------------------------------------------------------
  22.  
  23.  
  24.  
  25. on mInit (me)
  26.   myMembers = [:]
  27.   myCastlib = 1
  28.   repeat with i = 1 to the number of castlibs
  29.     if castlib(i).name = "temp" then myCastlib = i
  30.   end repeat
  31.   myNextSlot = (the number of members of castlib myCastlib) + 1
  32. end
  33.  
  34.  
  35. on mDestroy (me)
  36.   if the runMode = "Author" then 
  37.     put "Erasing temp members"
  38.     repeat with aMemRef in myMembers
  39.       if aMemRef.type <> #Empty then erase aMemRef
  40.       else put "Error deleting " & aMemRef
  41.     end repeat
  42.   end if
  43.   myMembers.deleteAll()
  44. end
  45.  
  46. on mCreate (me, id, aMemberType)
  47.   if voidP(myMembers) then me.mInit()
  48.   aMemRef = myMembers[id]
  49.   if voidP(aMemRef) then
  50.     aMemRef = new(aMemberType, member myNextSlot of castlib myCastlib )
  51.     myMembers[id] = aMemRef
  52.     myNextSlot = myNextSlot + 1
  53.   end if
  54.   return myMembers[id]
  55. end
  56.  
  57. on mErase (me, aMemRef)
  58.   if aMemRef.ilk <> #Member then 
  59.     aMemRef = myMembers.getAProp(aMemRef)
  60.     if voidP(aMemRef) then
  61.       return #Error
  62.     end if
  63.   end if
  64.   if aMemRef.type <> #Empty then erase aMemRef
  65.   myMembers.deleteOne(aMemRef)
  66.   put myMembers
  67. end
  68.  
  69.  
  70. --------------------------------------------------------------------------------------------------------------
  71. -- PRIVATE
  72. --------------------------------------------------------------------------------------------------------------
  73.  
  74.  
  75. on debug_showStatus (me)
  76.   msg = return
  77.   msg = msg & me.script & return & "myMembers: " & myMembers
  78.   put msg
  79. end
  80.